home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
LOGIC Apps
/
Logic-APPLE_II_APPS.iso
/
mac
/
LOGIC Apple II 5.25" Library - ProDOS
/
PRO018.dsk
/
GRUNGY.TOWERS.bas
< prev
next >
Wrap
BASIC Source File
|
2012-02-16
|
7KB
|
157 lines
100 REM GRUNGY TOWERS
110 REM BY JIM BUTTERFIELD
120 REM ARCHITECT: JOHN STOUT
130 REM
140 I = RND( -TI)
150 DN$ = "": FOR I = 1 TO 10:DN$ = DN$ + CHR$(10): NEXT
160 DEF FN R(X) = INT( RND(1) *X) +1
170 TEXT : HOME : PRINT TAB( 14)"GRUNGY TOWERS": VTAB 5
180 PRINT " PR# A MURDER HAS BEEN COMMITTED AT THE"
190 PRINT "TOWERS. YOUR JOB, SUPERINTENDENT, IS"
200 PRINT "TO FIND THE MURDERER.": PRINT : PRINT "CHECK THE ALIBIS CLOSELY:"
210 PRINT "THE KILLER IS SURE TO GIVE"
220 PRINT "HIMSELF AWAY. PR# "
230 PRINT "HINT: NOBODY EVER SUSPECTS THE REAL"
240 PRINT "MURDERER. PR# "
250 PRINT "PLAYING HINT: YOU MAY NAME ANY ROOM"
260 PRINT "OR PERSON WITH THREE OR MORE LETTERS,"
270 PRINT "E.G., 'LIV' FOR LIVING ROOM. PR# PR# PR# "
280 PRINT "PRESS ANY KEY TO START.";
290 DIM M$(25),R$(25),K$(4),Y$(6)
300 DATA SHOT WITH A ANTIQUE PISTOL,STABBED WITH AN ORIENTAL DAGGER
310 DATA STRANGLED BY A SILKEN SASH,CLUBBED WITH A BRASS CANDLESTICK
320 DATA MANGLED BY A FALLEN CHANDELIER,SMOTHERED WITH AN ERMINE PILLOW
330 FOR I = 1 TO 6: READ Y$(I): NEXT I:Y% = FN R(6)
340 DATA SUPERINTENDENT,INSPECTOR,SERGEANT,CONSTABLE
350 FOR I = 1 TO 4: READ K$(I): NEXT I:K% = 1
360 FOR I = 1 TO 25: READ R$(I): NEXT
370 DATA HALL,LIVING ROOM,KITCHEN,DINING ROOM,BILLIARD ROOM,DOWNSTAIRS LAV
380 DATA BATHROOM,MASTER BEDROOM,NURSERY
390 DATA SERVANT'S QUARTERS
400 DATA CONSERVATORY,TERRACE,STABLES,ATTICS,LAUNDRY,LIBRARY,MUSIC ROOM,STUDY
410 DATA BOILER ROOM,PANTRY,SCULLERY
420 DATA FIRST BEDROOM,SECOND BEDROOM,THIRD BEDROOM,FOURTH BEDROOM
430 FOR I = 1 TO 25:M$(I) = "": NEXT
440 I = 1
450 J = FN R(24) +1: IF M$(J) = "" THEN GOSUB 1500:I = J: GOTO 450
460 IF PEEK( -16384) <128 THEN 460
470 POKE -16368,0: HOME : GOSUB 1340
480 FOR I = 1 TO 25: IF M$(I) < >"" THEN NEXT I: GOTO 510
490 J = FN R(25): IF M$(J) = "" GOTO 490
500 GOSUB 1500: GOTO 480
510 DIM S(12),N$(12),C$(12),A$(12),B$(12)
520 GOSUB 1340: FOR I = 1 TO 12: READ N$(I),C$(I),A$(I),B$(I)
530 NEXT I
540 FOR I = 1 TO 25: IF LEN(M$(I)) >1 GOTO 580
550 FOR J = I +1 TO 25: IF LEN(M$(J)) >1 GOTO 570
560 GOSUB 1500
570 NEXT J
580 NEXT I
590 DATA FUNGUS,BUTLER,"SIR, I'M AFRAID I KNOW NOTHING.",MOST REGRETTABLE.
600 DATA MRS RAMSBOTTOM,COOK,"DON'T KNOW A THING, DEARIE.","ISN'T IT AWFUL?"
610 DATA BLOGGS,GARDENER,"WELL,GUV,IT BEATS ME.","IT'S A RUM GO"
620 DATA FIFI,MAID,"EET EES SO SURPRISEENG!","HOW YOU SAY, SCARY.."
630 DATA CHOLMONDELY,COLONEL,"BY JOVE! AWKWARD BUSINESS, THIS.","BOTHER!"
640 DATA LADY THROCKMORTON,DOWAGER,"DEAR ME..","IT'S VERY BAD MANNERED"
650 DATA RAGS,CHAUFFEUR,"DON'T KNOW NOTHING, SIR:","MAKES YOU THINK, DON'T IT?"
660 DATA AGATHA FFORBES-SMYTHE,DEBUTANTE,GOODNESS!,"ISN'T IT JUST AWFUL?"
670 DATA TINSEL,ACTRESS,"DON'T KNOW A THING, DARLING.","HOW DRAMATIC, THOUGH!"
680 DATA MADAME BLINSKY,COUNTESS,"I SEE NODINK, MY DEAR.",IS VERY SINISTER
690 DATA FRANK N STONE,DOCTOR,"BAD BUSINESS, THIS.","DON'T LIKE IT AT ALL"
700 DATA PIGGY FANSHAW,TWIT,"I SAY, EXCITING, WHAT?","JOLLY BAD SHOW, OLD MAN"
710 DIM W(12),X(12)
720 R% = FN R(24) +1
730 FOR I = 1 TO 12:W% = FN R(25)
740 X% = FN R(25): IF X% = R% GOTO 740
750 W(I) = W%:X(I) = X%: NEXT I
760 GOSUB 1340:M% = FN R(12):X(M%) = 0:X = R%
770 G% = FN R(3): ON G% GOTO 800,830
780 FOR I = 1 TO 11:X = X(I): FOR J = I +1 TO 12: IF X = X(J) GOTO 830
790 NEXT J,I
800 Z% = 1:X = FN R(25): FOR I = 1 TO 12: IF X(I) = X GOTO 830
810 NEXT I
820 Z% = FN R(12): IF M% = Z% GOTO 820
830 X(M%) = -X: GOSUB 1340: FOR I = 1 TO 12
840 S(I) = FN R(12): NEXT I
850 GOSUB 1420:R = 1: HOME
860 PRINT "YOU ARE IN THE ";R$(R)
870 PRINT : FOR I = 1 TO 12: IF W(I) < >R GOTO 1040
880 PRINT N$(I);",THE ";C$(I);", IS HERE."
890 PRINT "THE ";C$(I);" SAYS: '";
900 Z$ = A$(I): GOSUB 1610:Z$ = " I WAS IN THE ": GOSUB 1610
910 X = ABS(X(I)):Z$ = R$(X): GOSUB 1610:Z$ = " AT THE TIME ": GOSUB 1610
920 IF I = M% AND Z% = 0 GOTO 980
930 W$ = "WITH THE ":F = 0: FOR J = 1 TO 12: IF I = J GOTO 950
940 IF X = X(J) THEN Z$ = W$: GOSUB 1610:Z$ = C$(J): GOSUB 1610:W$ = " AND THE ":F = 1
950 NEXT J
960 IF F >0 GOTO 990
970 IF I = M% AND Z% >0 THEN Z$ = W$: GOSUB 1610:Z$ = C$(Z%): GOSUB 1610: GOTO 990
980 Z$ = "BY MYSELF": GOSUB 1610
990 Z$ = ". ": GOSUB 1610
1000 S% = S(I): IF S% = M% THEN Z$ = "MAYBE IT WAS SUICIDE": GOSUB 1610: GOTO 1030
1010 IF ABS(X(S%)) = X THEN Z$ = "I DUNNO WHO COULD HAVE DONE IT": GOSUB 1610: GOTO 1030
1020 Z$ = "I SUSPECT THE ": GOSUB 1610:Z$ = C$(S%): GOSUB 1610
1030 Z$ = ". ": GOSUB 1610:Z$ = B$(I): GOSUB 1610: PRINT ".'": PRINT : FOR J = 1 TO 2E3: NEXT
1040 NEXT I
1050 IF R% < >R GOTO 1090
1060 PRINT "THERE IS A DEAD BODY HERE"
1070 PRINT Y$(Y%);"."
1080 PRINT "THE BODY SAYS: NOTHING": PRINT
1090 M$ = M$(R)
1100 PRINT "YOU MAY ";: INVERSE : PRINT "ACCUSE";: NORMAL : PRINT ", OR PROCEED TO:"
1110 FOR I = 1 TO LEN(M$):J = ASC( MID$ (M$,I)) -64: PRINT TAB( 12)R$(J): NEXT I: PRINT
1120 INPUT "YOUR MOVE ... ";X$
1130 IF LEN(X$) <3 GOTO 1120
1140 X$ = LEFT$(X$,3): IF X$ = "ACC" GOTO 1180
1150 FOR I = 1 TO LEN(M$):J = ASC( MID$ (M$,I)) -64
1160 IF LEFT$(R$(J),3) = X$ THEN R = J: GOTO 860
1170 NEXT I: GOTO 1120
1180 PRINT "VERY WELL, ";K$(K%): PRINT " YOU ACCUSE THE...";
1190 INPUT A$: IF A$ = "" GOTO 1100
1200 A$ = LEFT$(A$,3): FOR I = 1 TO 12: IF A$ = LEFT$(C$(I),3) GOTO 1210
1203 NEXT : PRINT : PRINT " YOU DID NOT SPECIFY A SUSPECT!": PRINT : GOTO 1100
1210 IF I = M% GOTO 1260
1220 PRINT "BUNGLER! IT'S NOT THE ";C$(I);"!"
1230 K% = K% +1: IF K% >4 GOTO 1280
1240 PRINT "YOU ARE DEMOTED TO ";K$(K%);"!"
1250 PRINT "GO BACK AND TRY TO GET THE RIGHT ONE!": GOTO 1100
1260 INVERSE : PRINT "RIGHT!";: NORMAL : PRINT " ANOTHER CRIMINAL SPEEDILY"
1270 PRINT "BROUGHT TO JUSTICE!": GOTO 1310
1280 PRINT "THANKS TO YOU, THE MURDERER (IN FACT,"
1290 PRINT "THE ";C$(M%);") GOT AWAY."
1300 PRINT "YOU'RE DISMISSED FROM THE FORCE!"
1310 PRINT : INPUT "WANT TO TRY AGAIN? ";Z$
1320 Z$ = LEFT$(Z$,1): IF Z$ = "Y" OR Z$ = "y" THEN RUN
1330 PRINT CHR$(4)"-STARTUP"
1340 N = 1 + INT(( RND(1) *30))
1350 L = FN R(5) *2 +1
1360 VTAB L
1370 GOSUB 1510
1380 FOR I = L +9 TO 20
1390 IF I >15 AND I <19 THEN HTAB N +1: PRINT "[ ]": GOTO 1410
1400 HTAB N +1: PRINT "[__]"
1410 NEXT : RETURN
1420 FOR J = 0 TO 15 + RND(1) *8: GOSUB 1340: NEXT J
1430 VTAB 16
1440 HTAB N +1: PRINT "/*\"
1450 FOR I1 = 1 TO 4: HTAB N +1: PRINT "[";: FLASH : PRINT " ";: NORMAL : PRINT "]": NEXT
1460 VTAB 23: PRINT "WELCOME TO GRUNGY TOWERS!"
1470 PRINT "HIT ANY KEY TO START THE GAME.";
1480 IF PEEK( -16384) <128 THEN 1480
1490 POKE -16368,0: RETURN
1500 M$(J) = M$(J) + CHR$(I +64):M$(I) = M$(I) + CHR$(J +64): RETURN
1510 HTAB N +2: PRINT "()"
1520 HTAB N +2: PRINT "/\"
1530 HTAB N +1: PRINT "/ \"
1540 HTAB N: PRINT "/____\"
1550 HTAB N +1: PRINT "[ ]"
1560 HTAB N +1: PRINT "[";: INVERSE : PRINT " ";: NORMAL : PRINT " ]"
1570 HTAB N +1: PRINT "[ ";: INVERSE : PRINT " ";: NORMAL : PRINT "]"
1580 HTAB N +1: PRINT "[";: INVERSE : PRINT " ";: NORMAL : PRINT " ]"
1590 HTAB N +1: PRINT "[ ";: INVERSE : PRINT " ";: NORMAL : PRINT "]"
1600 RETURN
1610 Z = 39 - POS(0): IF LEN(Z$) < = Z THEN PRINT Z$;: RETURN
1620 IF Z <2 THEN PRINT : GOTO 1610
1630 FOR Z1 = Z TO 1 STEP -1: IF MID$ (Z$,Z1,1) < >" " THEN NEXT Z1
1640 IF Z1 = 0 THEN PRINT : GOTO 1610
1650 PRINT LEFT$(Z$,Z1): PRINT MID$ (Z$,Z1 +1);: RETURN